如果MySQL在创建表时, 出现
the right syntax to use near USING BTREE
这样的错误,莫惊慌,因为这是MySQL的版本引起的。
使用下面的SQL语句创建表:
CREATE TABLE `message_info_tbl` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`phone` varchar(12) DEFAULT NULL COMMENT '手机号',
`code` varchar(20) NOT NULL COMMENT '验证码',
`ip` varchar(15) NOT NULL,
`create_at` int(10) NOT NULL COMMENT '发送时间',
`used_state` enum('yes','no') NOT NULL DEFAULT 'no' COMMENT '是否使用',
`type` enum('find','register') NOT NULL DEFAULT 'register' COMMENT '作用类型',
`client_type` enum('app','pc','wap') NOT NULL DEFAULT 'pc' COMMENT '客户端类型',
PRIMARY KEY (`id`),
KEY `phone` (`phone`) USING BTREE,
KEY `code` (`code`) USING BTREE,
KEY `used_state` (`used_state`) USING BTREE,
KEY `ip` (`ip`) USING BTREE,
KEY `tl` (`tl`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='信息详情';
错误:
PRIMARY KEY (`id`),
KEY `phone` (`phone`) USING BTREE,
KEY `code` (`code`) USING BTREE,
KEY `used_state` (`used_state`) USING BTREE,
KEY `ip` (`ip`) USING BTREE,
KEY `tl` (`tl`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='验证信息';
[Err] 1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'USING BTREE,
KEY `code` (`code`) USING BTREE,
KEY `used_s
因为mysql新版本的USING BTREE
语法与老版本有些不同(mysql5.14前后)
我们只需要将文件中的形如:
KEY `code` (`code`) USING BTREE
改为
KEY `code` USING BTREE(`code`)
意外:
如果改了之后还不起作用,则需要查看你的MySQL版本了,通过命令select version();
查看,我的MySQL版本为 4.0.27
经典版的, 所以,使用以上的方法还不能解决问题,所以,就要用最原始的方法,去掉USING BTREE
关键字,并且SQL语句里边不能有字段注释comments
,所以,低版本MySQL的语句为下面这样的:
mysql> select version();
+-----------+
| version() |
+-----------+
| 4.0.27 |
+-----------+
1 row in set (0.12 sec)
Mysql 低版本语句:
CREATE TABLE `message_info_tbl` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
`phone` varchar(12) NULL DEFAULT NULL ,
`code` varchar(20) NOT NULL DEFAULT '' ,
`ip` varchar(36) NOT NULL DEFAULT '' ,
`used_state` enum('yes','no') NOT NULL DEFAULT 'no' ,
`type` enum('find','register') NOT NULL DEFAULT 'register' ,
`client_type` enum('pc','app','wap') NOT NULL DEFAULT 'pc' ,
`create_at` int(10) UNSIGNED NOT NULL DEFAULT 0 ,
PRIMARY KEY (`id`),
INDEX `phone` (`phone`),
INDEX `code` (`code`),
INDEX `used_state` (`used_state`),
INDEX `ip` (`ip`)
)
TYPE=InnoDB
ROW_FORMAT=DYNAMIC
;
OK ,这样就可以解决 USING BTREE
错误了~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。